$(document).ready(function(){
	window.MyClass = function MyClass(argsObj) {
		this.init(argsObj);
	};
	
	window.MyClass.prototype = new $.jsClasses.JSBase();
	window.MyClass.prototype.constructor = window.MyClass;
		
	window.MyClass.members = {
		memberOne: {
			check: [
				utilities.filters.notStrict.nullFilter,
				utilities.validators.strict.isFunction
			],
			defaultValue: function() {
				alert('defaultMemberObe');
			}
		},
		
		memberTwo: {
			check: [
				{
					twoSubmemberOne: [
						utilities.filters.notStrict.nullFilter,
						utilities.validators.strict.isString
					],
					twoSubmemberTwo: [
						{
							twoSubmemberTwoOne: [
								utilities.filters.notStrict.nullFilter,
								utilities.validators.strict.isString
							],
							twoSubmemberTwoTwo: [
								utilities.filters.notStrict.nullFilter,
								utilities.validators.strict.isNumber
							]
						}
					]
				}
			],
			defaultValue: {
				twoSubmemberOne: 'defaultTwoSubmemberOne',
				twoSubmemberTwo: {
					twoSubmemberTwoOne: 'defaultTwoSubmemberTwoOne',
					twoSubmemberTwoTwo: 0
				}
			}
		},
		
		memberThree: {
			check: [
				{
					threeSubmemberOne: [
						utilities.filters.notStrict.nullFilter,
						utilities.validators.strict.isString
					],
					threeSubmemberTwo: [
						{
							threeSubmemberTwoOne: [
								utilities.filters.notStrict.nullFilter,
								utilities.validators.strict.isString
							],
							threeSubmemberTwoTwo: [
								utilities.filters.notStrict.nullFilter,
								utilities.validators.strict.isNumber
							]
						}
					]
				}
			],
			defaultValue: {
				threeSubmemberOne: 'defaultThreeSubmemberOne',
				threeSubmemberTwo: {
					threeSubmemberTwoOne: 'defaultThreeSubmemberTwoOne',
					threeSubmemberTwoTwo: 0
				}
			}
		},
		
		memberFour: {
			check: [
				utilities.filters.notStrict.nullFilter,
				utilities.validators.strict.isString
			],
			defaultValue: 'defaultMemberFour',
			getter: {
				fn: function() {
					return this.memberFour;
				},
				name: 'getMemberFour'
			},
			setter: {
				fn: function(value) {
					var result = this.checkMemberSet({
						name: 'memberFour',
						value: value
					});
					if (result.returnedTrue.length == 1)
						this.memberFour = value;
					else 
						throw new TypeError();
				},
				name: 'setMemberFour'
			}
		}
	};
	
	window.myObj = new MyClass({
		memberOne: function() {
			alert('pepe');
		},
		memberTwo: {
			twoSubmemberOne: 'caca',
			twoSubmemberTwo: 	{
					twoSubmemberTwoOne: 'twoSubmemberTwoOne',
					twoSubmemberTwoTwo: 1
			}
		},
		memberThree: {
			threeSubmemberOne: 'threeSubmemberOne',
			threeSubmemberTwo: {
					threeSubmemberTwoOne: 'threeSubmemberTwoOne',
					threeSubmemberTwoTwo: 1
			}
		},
		memberFour: 'memberFour'
	});
	
	console.dir(myObj);
	
});
